The way users interact with applications has gone through several phases of development over the last few decades. When computing systems first adopted interactive user input/output devices the users interacted with their applications using text terminals connected to central computers, a good example being the IBM 3270 text terminal. An advent and popularization of personal computers in the early 1980s marked the beginning of desktop computing as known today. In this contemporary model the execution of the operating system and applications happens on the end user device itself. The recent years, however, have witnessed reinvigorated interest in the centralization of end user computing. Technologies such as the Citrix Application Delivery Infrastructure, Microsoft Windows Terminal Services, or most recently virtual machine technology such as Kernel Virtual Machines products, Xen products, or VMWare ESX products are changing the desktop computing landscape back to the model of a terminal connected to a central server.
FIG. 1 illustrates the virtual desktop model. Users access their desktops 106 and applications using “thin client” devices 102 which relay only the keyboard and mouse events and screen updates over the local or wide-area network 108. End-user devices 102 include a monitor, keyboard, mouse, and disk-less “thin client” computer. The execution of the desktop operating system as well as applications takes place on remote servers 104, either within dedicated virtual machines or shared services sessions. This recent transition has been enabled by several developments of underlying technologies. The first one is ubiquitous high-speed networking access that allows effective responsiveness even at significant distances. The throughput of connections is high with fiber-optic cabling for even the “last mile” connections to private homes and small offices. Even though basic propagation latency will remain an obstacle for long distance desktop usage the connections of up to a few hundred miles are sufficiently responsive to allow for a smooth working experience. The second important advancement is the virtualization technology. It decouples users from physical resources thus making the management of the infrastructure much more flexible and arguably more cost-effective. Virtualization can be applied at both the application level and the operating system level The latter makes it possible to run multiple instances of desktop operating system on a single physical server while maintaining full isolation and security.